<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class ClienteM extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function cargarCliente($identificacion, $nacionalidad, $tipo) {
        $query = "SELECT * FROM cliente where id_pais='$nacionalidad' AND id_pais<>'' AND identificacion='$identificacion' AND identificacion<>'' AND id_tipo_cliente='$tipo' AND id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
        return $this->db->query($query)->result();
    }

    public function crearClientePersona($documento, $nacionalidad, $tipoDocumento, $nombre, $primerApellido, $segundoApellido, $genero, $fechaNacimiento, $telefono, $email, $ocupacion, $direccion, $nota = "") {
        $this->capitalizarTitulo($nombre);
        $this->capitalizarTitulo($primerApellido);
        $this->capitalizarTitulo($segundoApellido);
        $email = strtolower($email);
        $this->capitalizar($telefono);
        $this->capitalizar($direccion);
        $this->capitalizar($ocupacion);
        $this->capitalizar($nota);

        if ($tipoDocumento == "") {
            $tipoDocumento = "NULL";
        }
        if ($nacionalidad == "") {
            $nacionalidad = "NULL";
        }
        if ($_POST['fechaNacimiento'] != "")
            $query = "INSERT INTO cliente(identificacion, id_pais, id_documento, nombre, primer_apellido,segundo_apellido, genero, fecha_nacimiento, telefono, email, ocupacion,id_establecimiento,id_tipo_cliente,direccion,nota) VALUES('$documento', $nacionalidad, $tipoDocumento, '$nombre', '$primerApellido','$segundoApellido','','$fechaNacimiento', '$telefono', '$email', '$ocupacion','" . $_SESSION["establecimiento"]["id_establecimiento"] . "','1','$direccion','$nota')";
        else
            $query = "INSERT INTO cliente(identificacion, id_pais, id_documento, nombre, primer_apellido,segundo_apellido, genero, telefono, email, ocupacion,id_establecimiento,id_tipo_cliente,direccion,nota) VALUES('$documento', $nacionalidad, $tipoDocumento, '$nombre', '$primerApellido','$segundoApellido','', '$telefono', '$email', '$ocupacion','" . $_SESSION["establecimiento"]["id_establecimiento"] . "','1','$direccion','$nota')";

        $this->db->query($query);
    }

    public function crearClienteVentaExtra($nombre) {
        $query = "INSERT INTO cliente(nombre,id_establecimiento,id_tipo_cliente) VALUES('$nombre','" . $_SESSION["establecimiento"]["id_establecimiento"] . "','1')";
        $this->db->query($query);
    }

    public function actualizarClientePersona($idCliente, $documento, $nacionalidad, $tipoDocumento, $nombre, $primerApellido, $segundoApellido, $genero, $fechaNacimiento, $telefono, $email, $ocupacion, $direccion = "", $nota = "") {
        $this->capitalizarTitulo($nombre);
        $this->capitalizarTitulo($primerApellido);
        $this->capitalizarTitulo($segundoApellido);
        $email = strtolower($email);
        $this->capitalizar($telefono);
        $this->capitalizar($direccion);
        $this->capitalizar($ocupacion);
        $this->capitalizar($nota);

        if ($tipoDocumento == "") {
            $tipoDocumento = "NULL";
        }
        if ($nacionalidad == "") {
            $nacionalidad = "NULL";
        }
        if ($nacionalidad == "") {
            $nacionalidad = "NULL";
        }
        if ($fechaNacimiento == "") {
            $fechaNacimiento = "NULL";
        } else {
            $fechaNacimiento = "'$fechaNacimiento'";
        }

        $query = "UPDATE cliente SET identificacion='$documento', id_pais=$nacionalidad, id_documento=$tipoDocumento, nombre='$nombre', primer_apellido='$primerApellido', segundo_apellido='$segundoApellido', genero='$genero', fecha_nacimiento=$fechaNacimiento, telefono='$telefono', email='$email', ocupacion='$ocupacion', direccion='$direccion', nota='$nota' WHERE id_cliente='$idCliente'";
        $this->db->query($query);
    }

    public function crearClienteEmpresa($documento, $nacionalidad, $nombre, $telefono, $direccion, $email) {
        $this->capitalizarTitulo($nombre);
        $this->capitalizar($telefono);
        $this->capitalizar($direccion);
        $email = strtolower($email);

        if ($nacionalidad == "") {
            $nacionalidad = "NULL";
        }
        $query = "INSERT INTO cliente(identificacion, id_pais, nombre, primer_apellido, telefono, direccion, email,id_establecimiento,id_estado_civil,id_tipo_cliente) VALUES('$documento', $nacionalidad,'$nombre','', '$telefono', '$direccion', '$email','" . $_SESSION["establecimiento"]["id_establecimiento"] . "','3','2')";
        $this->db->query($query);
    }

    public function actualizarClienteEmpresa($idCliente, $documento, $nacionalidad, $nombre, $telefono, $direccion, $email) {
        $this->capitalizarTitulo($nombre);
        $this->capitalizar($telefono);
        $this->capitalizar($direccion);
        $email = strtolower($email);

        if ($nacionalidad == "") {
            $nacionalidad = "NULL";
        }
        $query = "UPDATE cliente SET identificacion='$documento', id_pais=$nacionalidad, nombre='$nombre', telefono='$telefono', direccion='$direccion', email='$email' WHERE id_cliente='$idCliente'";
        $this->db->query($query);
    }

    public function eliminarCliente($idCliente, $idEstablecimiento) { //Devuleve 1 si el id de cliente pertenece al establecimiento
        $query = "DELETE FROM cliente where id_cliente='$idCliente' AND id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function obtenerDatos($datos, $idCliente) {
        $query = "SELECT $datos FROM cliente where id_cliente='$idCliente'";
        return $this->db->query($query)->result();
    }

    public function esMiCliente($idCliente, $idEstablecimiento) { //Devuleve 1 si el id de cliente pertenece al establecimiento
        $query = "SELECT count(*) cantidad FROM cliente where id_cliente='$idCliente' AND id_establecimiento='$idEstablecimiento'";
        return $this->db->query($query)->result();
    }

    /* -------Pestaña Clientes-------- */

    public function contarClientes($establecimiento, $criterios) {
        $query = "SELECT count(DISTINCT(c.id_cliente)) cantidad FROM cliente c left JOIN cliente_x_reserva cr on c.id_cliente = cr.id_cliente WHERE c.id_establecimiento='$establecimiento'";
        $query.=(!empty($criterios['nombre'])) ? " AND lower(c.nombre) LIKE '" . strtolower($criterios['nombre']) . "%'" : " ";
        $query.=(!empty($criterios['identificacion'])) ? " AND c.identificacion LIKE '{$criterios['identificacion']}%'" : " ";
        $query.=(!empty($criterios['apellido'])) ? " AND lower(primer_apellido) LIKE '" . strtolower($criterios['apellido']) . "%'" : " ";
        $query.=(!empty($criterios['nacionalidad'])) ? " AND c.id_pais = '{$criterios['nacionalidad']}'" : " ";
        return $this->db->query($query)->result();
    }

    public function obtenerClientes($establecimiento, $filasPorPagina, $inicio, $criterios) {

        $query = "SELECT DISTINCT c.*,p.nombre as nombrePais FROM cliente c left join pais p  ON c.id_pais=p.id_pais  left JOIN cliente_x_reserva cr on c.id_cliente = cr.id_cliente where c.id_establecimiento='$establecimiento'";
        $query.=(!empty($criterios['nombre'])) ? "AND lower(c.nombre) LIKE '" . strtolower($criterios['nombre']) . "%'" : " ";
        $query.=(!empty($criterios['identificacion'])) ? "AND c.identificacion LIKE '{$criterios['identificacion']}%'" : " ";
        $query.=(!empty($criterios['apellido'])) ? "AND lower(primer_apellido) LIKE '" . strtolower($criterios['apellido']) . "%'" : " ";
        $query.=(!empty($criterios['nacionalidad'])) ? "AND c.id_pais = '{$criterios['nacionalidad']}'" : " ";
        $query.="ORDER BY c.primer_apellido,c.segundo_apellido, c.nombre  LIMIT $inicio,$filasPorPagina";
        return $this->db->query($query)->result();
    }

    public function getListaPaises() {
        $query = "SELECT * FROM pais";
        return $this->db->query($query)->result();
    }

    public function historial($idCliente) {
        $query = "SELECT r.id_reserva,ca.nombre as nombreCategoria,cu.nombre,r.fecha_ingreso,r.fecha_salida,r.estatus from cliente c,
	      reserva r,
              cliente_x_reserva cr,
              categoria ca,
              reserva_x_cuarto rc, 
              cuarto cu
WHERE  
             c.id_cliente='$idCliente'
AND  c.id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}'
AND 		cr.id_cliente=c.id_cliente
AND 		cr.id_reserva=r.id_reserva
AND		rc.id_reserva=r.id_reserva
AND 		rc.id_cuarto=cu.id_cuarto
AND 		cu.id_categoria=ca.id_categoria
AND 		r.checkin_realizado='1'";
        return $this->db->query($query)->result();
    }

    public function getByName($name) {
        $query = "select id_cliente,id_pais,identificacion,nombre,id_documento,fecha_nacimiento,primer_apellido,segundo_apellido,direccion,telefono,email,ocupacion from cliente where nombre like '%$name%' AND id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}' order by nombre";
        return $this->db->query($query)->result();
    }

    public function getByPrimerApellido($primerApellido) {
        $query = "select id_cliente,id_pais,identificacion,nombre,id_documento,fecha_nacimiento,primer_apellido,segundo_apellido,direccion,telefono,email,ocupacion from cliente where primer_apellido like '$primerApellido%' AND id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}' order by primer_apellido";
        return $this->db->query($query)->result();
    }

    public function getBySegundoApellido($segundoApellido) {
        $query = "select id_cliente,id_pais,identificacion,nombre,id_documento,fecha_nacimiento,primer_apellido,segundo_apellido,direccion,telefono,email,ocupacion from cliente where segundo_apellido like '$segundoApellido%' AND id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}' order by segundo_apellido";
        return $this->db->query($query)->result();
    }

}
